草庐IT

javascript oop、instanceof 和基类

全部标签

java - instanceof 是一种好的做法吗?

我有一个从基类扩展的对象列表。现在我只想对列表中的一个类实例应用特定操作。那里使用instanceof是一种好的做法吗?或者我应该通过例如自定义enum来区分对象?abstractclassBase;classFooextendsBase;classBarextendsBase;Listbases;for(Basebase:bases){if(baseinstanceofBar.class){//executemycustomoperationonthebaseobjectdoSomething((Bar)base);}}如果这种方法总体上不是那么好,我怎样才能做得更好?

java - Java 中的枚举基类

将其用作类枚举类的基类的最佳方法是什么。我希望能够创建不同的具体类型,而不必重新编写getter方法的代码。publicenumToolextendsItem{Pickaxe("Pickaxe",101),Saw("Saw",201);}并且Tool.getNames()将返回Tool类中所有项目名称的列表。publicenumItem{Default("Name",0);privatefinalintid;privatefinalStringname;Item(Stringname,intid){this.id=id;this.name=name;}publicintgetId(){

java - 无法编译从基类实现抽象方法的子类

在编译我定义的具有单一方法的基类的子类时遇到问题,每个子类都实现了抽象基方法,但是javac说它们没有,即使它在子类。DbModel.java(基类)packagecom.manodestra.db;importjava.sql.ResultSet;importjava.sql.SQLException;publicabstractclassDbModelextendsModel{abstractTnewInstance(ResultSetrs)throwsSQLException;}DbModel扩展了Model,它只有一个通用的toString方法。MenuPermissions.

java - 在也实现相同类的基类中使用泛型的好处

我最近在我未编写的代码中遇到过这种情况,虽然这种方法可能有一些设计上的好处,但我似乎无法从自己的大脑中挤出这种基本原理。所以在我看起来很愚蠢之前,我希望能在这里得到一些反馈。服务接口(interface)是这样的:publicinterfaceService{...}然后,一个基类添加了对Service接口(interface)的通用引用,其中T扩展了Service,但随后整个基类也实现了该接口(interface)。像这样:publicclassServiceBaseimplementsService{...}你为什么要这样做?我注意到在实践中,ServiceBase的扩展总是使用与

java - 什么是克隆对象的 instanceof?

如果类A公开对象的clone()方法:@OverridepublicObjectclone(){returnsuper.clone();}instanceof会是什么?(或getClass())使用clone()创建的A实例?classBextendsA的实例呢?使用clone()创建方法?编辑澄清:我问这个是因为甚至在编译之前,Eclipsejava编辑器需要将返回的clone()实例转换到分配的对象。这表明返回的类是Object(从技术上讲是这样,但到目前为止所有的答案都说类(class)应该是A)Aoriginal=newA();Acloned1=original.clone()

java - 传递一个参数以供 instanceof 使用

我有一个解析器有无数次这样的构造:if(tokens.first()instanceofCommaToken){tokens.consume();我想知道如何做到这一点:if(match(CommaToken)){...blah...}privatebooleanmatch(???tokenType){if(tokens.first()instanceoftokenType){...blah...}}我遇到了湿件故障,无法确定方法中的tokenType类。另一个问题是Java将“tokenType”视为文字。即:instanceoftokenType看起来很像instanceofCom

java - JUnit 扩展基类并在该类中运行测试

我正在使用JUnit3,并且经常遇到这样的情况:我必须测试对象是否已正确创建。我的想法是编写一个如下所示的类MyTestBase,然后针对特定情况的单元测试对其进行扩展。但是在我给出的示例中,MyTests不会运行MyTestBase中的测试。publicclassMyTestBaseextendsTestCase{protectedStringfoo;publicvoidtestFooNotNull(){assertNotNull(foo);}publicvoidtestFooValue(){assertEquals("bar",foo);}}publicclassMyTestsex

java - 设计模式如何在使用 List 时避免 instanceOf

假设您有一个包含菜肴的菜单,每道菜都应该以多种语言提供(法语、英语、阿拉伯语……)。Dish类包含一个列表Language类型对象。classDish{ListlanguagesvoidaddLanguage(Languagelg){...}}classLanguage{getDescription(){}}classFrenchextendsLanguage{}classMenu{Listdishes}如何避免使用instanceof什么时候需要对那道菜的特定语言的描述?我是否应该在dish类中为每种语言定义一个get方法:getFrench()、getArabic(),..?或者我

java - 有没有办法检查 instanceof 原语变量 java

我们可以知道对象引用是一个使用instanceof操作符的测试。但是有没有运算符来检查原始类型。例如:byteb=10;现在如果我只考虑值10。有什么方法可以让我发现它被声明为一个字节吗? 最佳答案 局部变量假设您的意思是局部变量,只要作为对象传递,原语将始终自动被其包装类型包装,在本例中为java.lang.Byte。不可能使用反射来引用局部变量,因此您无法区分Byte和byte或Integer和int等。ObjectbytePrimitive=(byte)10;System.out.println("isaByte?"+(byt

java - 使用反射从抽象基类访问构造函数

我正在玩弄Java的反射。我有一个带有构造函数的抽象类Base。abstractclassBase{publicBase(Stringfoo){//dosomemagic}}我还有一些扩展Base的类。它们不包含太多逻辑。我想用Base的构造函数实例化它们,而不必在那些派生类中编写一些代理构造函数。当然,我想用反射来实例化那些派生类。说:Classcls=SomeDerivedClass.class;Constructorconstr;constr=cls.getConstructor(newClass[]{String.class});//willreturnnullClasscls